/**
 * 使用promise封装axios 封装网络请求
 */
// 导入axios
import axios from "axios"
// 这里要用到vant，所以引入一下，请提示
import { Toast } from 'vant';

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    Toast.loading({
        duration: 0,        //使用了 Toast.loading 显示加载中提示，并设置了 duration: 0 使其持续显示直到手动清除(要在后面请求成功时和请求失败时包括添加响应器失败时都要加--清除加载提示)
        message: '加载中...',
        forbidClick: true, // 禁用背景点击
    });
    //设置请求头
    config.headers.Authorization = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdHVkZW50SWQiOiIwIiwiY29tcGFueWlkIjoiMSIsImxvZ2luTmFtZSI6IuiLj-ays-S6kSIsImNhbXB1c0lkIjoiMTgiLCJ1c2VyVHlwZSI6IkNPTVBBTlkiLCJjYW1wdXNpZHMiOiJbMTgsN10iLCJleHAiOjE3NTc4NDA5NTJ9.YTu2RicWVI4G_MhN6yeaa_Om6XiYFtzf_edJv2-dIL0';
    config.baseURL = process.env.VUE_APP_BASE_API_URL
    return config;
}, function (error) {
    // 对请求错误做些什么
    Toast.clear(); //关掉加载提示
    return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    Toast.clear();  // 请求成功会清除加载提示
    return response;
}, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    Toast.clear(); // 请求失败也会清除加载提示
    console.log('响应错误error', error);
    if (error.code == "ECONNABORTED" || error.code == 'ERR_NETWORK') {
        Toast.fail('网络请求超时');
    }

    return Promise.reject(error);
});


export const http = (url, params = {}, data = {}, method = 'get') => {
    return new Promise((resolve, reject) => {
        // 发送 POST 请求
        axios({
            method,    // 请求方法为POST
            url, // 请求的URL地址
            data, // 请求体数据
            params,
            timeout: 8000
        })

            .then(function (response) {
                // console.log(response);
                resolve(response)
            })
            .catch(function (error) {
                // console.log(error);
                reject(error)
            });
    })
}


// get请求
export const get = (url, params = {}, data = {}) => {
    return http(url, params, data, 'get')
}
// post请求
export const post = (url, data = {}) => {
    return http(url, data, 'post')
}


